package cn.biplam.common.paramters;


public class SelectConstant {

	/**
	 * 	关系运算符
	 */
	public enum Operator_Rela{

		/**等于 */
		E("="),
		/**大于 */
		G(">"),
		/**大于等于 */
		GE(">="),
		/**小于 */
		L("<"),
		/**小于等于 */
		LE("<="),
		/**不等于 */
		NE("<>"),
		/**空 */
		ISNULL("IsNull"),
		/**非空*/
		ISNOTNULL("NotNull"),
		/**包含*/
		IN("In"),
		/**不包含*/
		NOTIN("NotIn");

		private String value;
		private Operator_Rela(String value){this.value=value;}
		public Operator_Rela getValue(String comp)
		{
			for(Operator_Rela s:values()){
				if(s.toString().equals(comp)){
					return s;
				}
			}
			return null;
		}
		public String toString() {return value;}
	}

	/**
	 * 	函数
	 */
	public enum Function{

		/** 返回与指定的字符对应的十进制数 */
		ASCII,

		/** 返回字符串,并将所有的字符小写 */
		LOWER,
		/** 返回字符串,并将所有的字符大写 */
		UPPER,

		/** 删除左边出现的字符串，如果不指定去除空*/
		LTRIM,
		/** 删除右边出现的字符串，如果不指定去除空 */
		RTRIM,
		/** 取出指定字符，如果不指定去除空 */
		TRIM,
		/** 返回字符串的长度 */
		LENGTH,
		/** 子字符串 */
		SUBSTR,
		/** 字符串替换 */
		REPLACE,
		/** 在一个字符串中搜索指定的字符,返回发现指定的字符的位置; */
		INSTR,
		/** 将源字符串从一个语言字符集转换到另一个目的字符集 */
		CONVERT,
		/** 字符串连接 */
		CONTRACT,

		/** 按照指定的精度进行舍入 */
		TRUNC,

		/** 增加或减去月份 */
		ADD_MONTHS,
		/** 返回日期的最后一天  */
		LAST_DAY,
		/** 用来得到系统的当前日期 */
		SYSDATE,
		/** 日期f和s之间相差的月数*/
		MONTH_BETWEEN,
		/** Next_day(d,day) d后第一周指定的day日期  next_day(sysdate,'Monday')*/
		NEXT_DAY,

		/** 转换成日期 */
		TO_DATE,
		/** 转换成数字 */
		TO_NUMBER,
		/** 日期转换成字符串*/
		Date_TO_CHAR,
		/** 数字转换成字符*/
		TO_CHAR,

		/** 求和 */
		SUM,
		/** 平均值 */
		AVG,
		/** 最大值 */
		MAX,
		/** 最小值 */
		MIN,
		/** 计算个数 */
		COUNT,

		/**小于等于数值n的最大整数 (去掉小数点的取整操作)*/
		FLOOR,
		/** 求余*/
		MOD,
		/** m的n次方*/
		POWER,
		/** 保留n的小数点后m位*/
		ROUND,
		/** n的平方根*/
		SQRT,
		/** 求绝对值 */
		ABS,

		/** 逻辑函数*/
		CASEWHEN,
		/**子函数*/
		子函数
	}

	/**
	 * 表达式显示类型
	 */
	public enum Exp_Show_Type{
		/**语义表示*/
		Semantic("1"),
		/**SQL表示*/
		Sql("2");
		private String value;
		private Exp_Show_Type(String value){this.value=value;}
		public static Exp_Show_Type getValue(String comp)
		{
			for(Exp_Show_Type s:values()){
				if(s.toString().equals(comp)){
					return s;
				}
			}
			return Semantic;
		}
		public String toString() {return value;}
	}
}